﻿Imports System.Collections.Generic
Imports Pop.Api.Response
Imports Pop.Api.Util
Namespace Pop.Api.Request

    ''' <summary>
    ''' 1.07 (初级)卖家查询商品列表接口
    ''' </summary>
    Public Class SellerSearchItemListRequest
        Inherits PopRequest(Of SellerSearchItemListResponse)

        ''' <summary>
        ''' 查询第几页
        ''' </summary>
        Property PageIndex As Nullable(Of Long)

        ''' <summary>
        ''' 每页显示的记录数
        ''' </summary>
        Property PageSize As Nullable(Of Long)

        ''' <summary>
        ''' 卖家QQ号
        ''' </summary>
        Property SellerUin As Nullable(Of Long)

        ''' <summary>
        ''' 例如如果设置为“森林”，那么商品标题中带有“森林”词的商品列表就会被查找出来.
        ''' 需要过滤特殊字符，包含在中括号内的: 【  \】
        ''' </summary>
        Property ItemName As String

        ''' <summary>
        ''' 
        ''' </summary>
        Property ItemTags As String

        ''' <summary>
        ''' 店铺自定义分类，“0” 查询未分类商品
        ''' </summary>
        Property CategoryId As String

        ''' <summary>
        ''' 目标商品的状态值， 不传值则是获得所有的商品
        ''' 1.出售中， 
        ''' 2.仓库中，组合状态包括：我下架的+定期下架的+定时上架+从未上架的 
        ''' 3.我下架的 
        ''' 4.定期下架的 
        ''' 5.等待上架 
        ''' 6.定时上架 
        ''' 7.从未上架 
        ''' 8.售完的 
        ''' 9.等待处理 
        ''' 10.删除的商品
        ''' </summary>
        Property ItemState As Nullable(Of Long)

        ''' <summary>
        ''' 目标商品的第一次发布时间条件区间里的左边界值
        ''' 时间格式：yyyy-MM-dd HH:mm:ss
        ''' </summary>
        Property CreateTimeBegin As String

        ''' <summary>
        ''' 目标商品的第一次发布时间条件区间里的右边界值
        ''' 时间格式：yyyy-MM-dd HH:mm:ss
        ''' </summary>
        Property CreateTimeEnd As String

        ''' <summary>
        ''' 目标商品的最后变更时间条件区间里的左边界值
        ''' 时间格式：yyyy-MM-dd HH:mm:ss
        ''' </summary>
        Property ModifyTimeBegin As String

        ''' <summary>
        ''' 目标商品的最后变更时间条件区间里的右边界值
        ''' 时间格式：yyyy-MM-dd HH:mm:ss
        ''' </summary>
        Property ModifyTimeEnd As String

        ''' <summary>
        ''' 目标商品价格大于等于 单位：分
        ''' </summary>
        Property PriceMorethan As Nullable(Of Long)

        ''' <summary>
        ''' 目标商品价格小于等于 单位：分
        ''' </summary>
        Property PriceLessthan As Nullable(Of Long)

        ''' <summary>
        ''' 是否需要返回商品的附属信息
        ''' </summary>
        Property ExtendInfo As Nullable(Of Long)

        ''' <summary>
        ''' 目标商品列表的排序方式：
        ''' 0, 商品ID升序排列 
        ''' 1, 商品ID降序排列 
        ''' 2, 发布时间升序排列 
        ''' 3, 发布时间降序排列 
        ''' 4, 下架时间升序排列 
        ''' 5, 下架时间降序排列 
        ''' 6, 上架时间升序排列 
        ''' 7, 上架时间降序排列 
        ''' 8, 价格升序排列 
        ''' 9, 价格降序排列 
        ''' 10, 商品出价次数升序排列 
        ''' 11, 商品出价次数降序排列 
        ''' 12, 商品剩余时间升序排列 
        ''' 13, 商品剩余时间降序排列 
        ''' 14, 商品定时上架时间升序排列 
        ''' 15, 商品定时上架时间降序排列 
        ''' 16, 商品剩余件数升序排列 
        ''' 17, 商品剩余件数降序排列
        ''' </summary>
        Property OrderType As Nullable(Of Long)

#Region "Overrides"

        Protected Overrides Function GetApiName() As String
            Return "item.sellerSearchItemList"
        End Function

        Protected Overrides Function GetParameters() As IEnumerable(Of KeyValuePair(Of String, String))
            Dim parameters As New PopDictionary
            parameters.Add("sellerUin", Me.SellerUin)
            parameters.Add("pageIndex", Me.PageIndex)
            parameters.Add("pageSize", Me.PageSize)
            parameters.Add("itemName", Me.ItemName)
            parameters.Add("itemTags", Me.ItemTags)
            parameters.Add("categoryId", Me.CategoryId)
            parameters.Add("itemState", Me.ItemState)
            parameters.Add("createTimeBegin", Me.CreateTimeBegin)
            parameters.Add("createTimeEnd", Me.CreateTimeEnd)
            parameters.Add("modifyTimeBegin", Me.ModifyTimeBegin)
            parameters.Add("modifyTimeEnd", Me.ModifyTimeEnd)
            parameters.Add("priceMorethan", Me.PriceMorethan)
            parameters.Add("priceLessthan", Me.PriceLessthan)
            parameters.Add("extendInfo", Me.ExtendInfo)
            parameters.Add("orderType", Me.OrderType)
            Return parameters
        End Function

        Protected Overrides Sub Validate()
            Me.PageIndex.ValidateRequired("pageIndex")
            Me.PageSize.ValidateRequired("pageSize")
            Me.SellerUin.ValidateRequired("sellerUin")
        End Sub

#End Region

    End Class
End Namespace
